#ifndef __APP_BUFFER_H__
#define __APP_BUFFER_H__

#include <string.h>
#include "log/log.h"
#include <pthread.h>
#include <stdlib.h>
#define MAX_MSG_SIZE (256 - 1)
typedef struct
{
   unsigned char *ptr;
    int total_size;
    int len;//数据长度

}sub_buffer_t;

typedef struct 
{
    sub_buffer_t *sub_buffers[2];
    int read_index;
    int write_index;
    //读写锁
    pthread_mutex_t read_mutex;
    pthread_mutex_t write_mutex;
}buffer_t;

//初始化
buffer_t *app_buffer_init(int total_size);

//释放
void app_buffer_free(buffer_t *buffer);
/**
 * @brief 写数据
 *
 * @param buffer 缓冲区
 * @param data 要写入的数据
 * @param len 要写入的数据长度
 * @return int 是否成功 0 成功 -1 失败
 */
int app_buffer_write(buffer_t *buffer, char *data, int len);
/**
 * @brief 读数据
 *
 * @param buffer
 * @param data 读到的数据会放在这里
 * @param len 期望读取的数据长度
 * @return int 实际读取的数据长度
 */
int app_buffer_read(buffer_t *buffer, char *data, int len);


#endif /* __APP_BUFFER_H__ */
